package com.ylfstu.jdbc.JdbcUtils;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
 * @Author: Joy_yang
 * @Date: 2022/10/19 21:53
 * 这是一个jdbc工具类，完成mysql连接和关闭资源
 */
public class JdbcUtils {
    //定义相关属性(4个)，因为只需要一份，因此我们做成static
    private static String user; //用户名
    private static String password; //密码
    private static String url; //url
    private static String driver; //驱动名

    //在static代码块去初始化
    static {
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("src\\mysql.properties"));
            //读取相关的属性值
            user = properties.getProperty("user");
            password = properties.getProperty("password");
            url = properties.getProperty("url");
            driver = properties.getProperty("driver");
        } catch (IOException e) {
            //在实际开发中，我们可以这样处理
            //1. 将编译异常转成 运行异常
            //2. 这时调用者，可以选择捕获异常，也可以选择默认处理异常，比较方便
            throw new RuntimeException(e);
        }

    }

    //连接数据库，返回Connection
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            //1. 将编译异常转成 运行异常
            //2. 这时调用者，可以选择捕获异常，也可以选择默认处理异常，比较方便
            throw new RuntimeException(e);
        }
    }

    //关闭相关资源
    /*
        1.ResultSet
        2.Statement 或 PreparedStatement
        3.Connection
    */
    public static void close(ResultSet resultSet, Statement statement, Connection connection) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            //1. 将编译异常转成 运行异常
            throw new RuntimeException(e);
        }

    }


}















